!(function (e, n) {
  'object' == typeof exports && 'undefined' != typeof module ? (module.exports = n()) : 'function' == typeof define && define.amd ? define(n) : ((e = e || self).uni = n())
})(this, function () {
  'use strict'
  try {
    var e = {}
    Object.defineProperty(e, 'passive', {
      get: function () {
        !0
      }
    }),
      window.addEventListener('test-passive', null, e)
  } catch (e) {}
  var n = Object.prototype.hasOwnProperty
  function i(e, i) {
    return n.call(e, i)
  }
  var t = []
  function o() {
    return window.__dcloud_weex_postMessage || window.__dcloud_weex_
  }
  function a() {
    return window.__uniapp_x_postMessage || window.__uniapp_x_
  }
  var r = function (e, n) {
      var i = { options: { timestamp: +new Date() }, name: e, arg: n }
      if (a()) {
        if ('postMessage' === e) {
          var r = { data: n }
          return window.__uniapp_x_postMessage ? window.__uniapp_x_postMessage(r) : window.__uniapp_x_.postMessage(JSON.stringify(r))
        }
        var d = { type: 'WEB_INVOKE_APPSERVICE', args: { data: i, webviewIds: t } }
        window.__uniapp_x_postMessage ? window.__uniapp_x_postMessageToService(d) : window.__uniapp_x_.postMessageToService(JSON.stringify(d))
      } else if (o()) {
        if ('postMessage' === e) {
          var s = { data: [n] }
          return window.__dcloud_weex_postMessage ? window.__dcloud_weex_postMessage(s) : window.__dcloud_weex_.postMessage(JSON.stringify(s))
        }
        var w = { type: 'WEB_INVOKE_APPSERVICE', args: { data: i, webviewIds: t } }
        window.__dcloud_weex_postMessage ? window.__dcloud_weex_postMessageToService(w) : window.__dcloud_weex_.postMessageToService(JSON.stringify(w))
      } else {
        if (!window.plus) return window.parent.postMessage({ type: 'WEB_INVOKE_APPSERVICE', data: i, pageId: '' }, '*')
        if (0 === t.length) {
          var u = plus.webview.currentWebview()
          if (!u) throw new Error('plus.webview.currentWebview() is undefined')
          var g = u.parent(),
            v = ''
          ;(v = g ? g.id : u.id), t.push(v)
        }
        if (plus.webview.getWebviewById('__uniapp__service')) plus.webview.postMessageToUniNView({ type: 'WEB_INVOKE_APPSERVICE', args: { data: i, webviewIds: t } }, '__uniapp__service')
        else {
          var c = JSON.stringify(i)
          plus.webview.getLaunchWebview().evalJS('UniPlusBridge.subscribeHandler("'.concat('WEB_INVOKE_APPSERVICE', '",').concat(c, ',').concat(JSON.stringify(t), ');'))
        }
      }
    },
    d = {
      navigateTo: function () {
        var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
          n = e.url
        r('navigateTo', { url: encodeURI(n) })
      },
      navigateBack: function () {
        var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
          n = e.delta
        r('navigateBack', { delta: parseInt(n) || 1 })
      },
      switchTab: function () {
        var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
          n = e.url
        r('switchTab', { url: encodeURI(n) })
      },
      reLaunch: function () {
        var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
          n = e.url
        r('reLaunch', { url: encodeURI(n) })
      },
      redirectTo: function () {
        var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
          n = e.url
        r('redirectTo', { url: encodeURI(n) })
      },
      getEnv: function (e) {
        a() ? e({ uvue: !0 }) : o() ? e({ nvue: !0 }) : window.plus ? e({ plus: !0 }) : e({ h5: !0 })
      },
      postMessage: function () {
        var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}
        r('postMessage', e.data || {})
      }
    },
    s = /uni-app/i.test(navigator.userAgent),
    w = /Html5Plus/i.test(navigator.userAgent),
    u = /complete|loaded|interactive/
  var g = window.my && navigator.userAgent.indexOf(['t', 'n', 'e', 'i', 'l', 'C', 'y', 'a', 'p', 'i', 'l', 'A'].reverse().join('')) > -1
  var v = window.swan && window.swan.webView && /swan/i.test(navigator.userAgent)
  var c = window.qq && window.qq.miniProgram && /QQ/i.test(navigator.userAgent) && /miniProgram/i.test(navigator.userAgent)
  var p = window.tt && window.tt.miniProgram && /toutiaomicroapp/i.test(navigator.userAgent)
  var _ = window.wx && window.wx.miniProgram && /micromessenger/i.test(navigator.userAgent) && /miniProgram/i.test(navigator.userAgent)
  var m = window.qa && /quickapp/i.test(navigator.userAgent)
  var f = window.ks && window.ks.miniProgram && /micromessenger/i.test(navigator.userAgent) && /miniProgram/i.test(navigator.userAgent)
  var l = window.tt && window.tt.miniProgram && /Lark|Feishu/i.test(navigator.userAgent)
  var E = window.jd && window.jd.miniProgram && /jdmp/i.test(navigator.userAgent)
  var x = window.xhs && window.xhs.miniProgram && /xhsminiapp/i.test(navigator.userAgent)
  for (
    var S,
      h = function () {
        ;(window.UniAppJSBridge = !0), document.dispatchEvent(new CustomEvent('UniAppJSBridgeReady', { bubbles: !0, cancelable: !0 }))
      },
      y = [
        function (e) {
          if (s || w)
            return (
              window.__uniapp_x_postMessage || window.__uniapp_x_ || window.__dcloud_weex_postMessage || window.__dcloud_weex_
                ? document.addEventListener('DOMContentLoaded', e)
                : window.plus && u.test(document.readyState)
                ? setTimeout(e, 0)
                : document.addEventListener('plusready', e),
              d
            )
        },
        function (e) {
          if (_) return window.WeixinJSBridge && window.WeixinJSBridge.invoke ? setTimeout(e, 0) : document.addEventListener('WeixinJSBridgeReady', e), window.wx.miniProgram
        },
        function (e) {
          if (c) return window.QQJSBridge && window.QQJSBridge.invoke ? setTimeout(e, 0) : document.addEventListener('QQJSBridgeReady', e), window.qq.miniProgram
        },
        function (e) {
          if (g) {
            document.addEventListener('DOMContentLoaded', e)
            var n = window.my
            return { navigateTo: n.navigateTo, navigateBack: n.navigateBack, switchTab: n.switchTab, reLaunch: n.reLaunch, redirectTo: n.redirectTo, postMessage: n.postMessage, getEnv: n.getEnv }
          }
        },
        function (e) {
          if (v) return document.addEventListener('DOMContentLoaded', e), window.swan.webView
        },
        function (e) {
          if (p) return document.addEventListener('DOMContentLoaded', e), window.tt.miniProgram
        },
        function (e) {
          if (m) {
            window.QaJSBridge && window.QaJSBridge.invoke ? setTimeout(e, 0) : document.addEventListener('QaJSBridgeReady', e)
            var n = window.qa
            return { navigateTo: n.navigateTo, navigateBack: n.navigateBack, switchTab: n.switchTab, reLaunch: n.reLaunch, redirectTo: n.redirectTo, postMessage: n.postMessage, getEnv: n.getEnv }
          }
        },
        function (e) {
          if (f) return window.WeixinJSBridge && window.WeixinJSBridge.invoke ? setTimeout(e, 0) : document.addEventListener('WeixinJSBridgeReady', e), window.ks.miniProgram
        },
        function (e) {
          if (l) return document.addEventListener('DOMContentLoaded', e), window.tt.miniProgram
        },
        function (e) {
          if (E) return window.JDJSBridgeReady && window.JDJSBridgeReady.invoke ? setTimeout(e, 0) : document.addEventListener('JDJSBridgeReady', e), window.jd.miniProgram
        },
        function (e) {
          if (x) return window.xhs.miniProgram
        },
        function (e) {
          return document.addEventListener('DOMContentLoaded', e), d
        }
      ],
      M = 0;
    M < y.length && !(S = y[M](h));
    M++
  );
  S || (S = {})
  var P = 'undefined' != typeof uni ? uni : {}
  if (!P.navigateTo) for (var b in S) i(S, b) && (P[b] = S[b])
  return (P.webView = S), P
})
